FROM golang:1.16 AS builder

# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
    CGO_ENABLED=1 \
    GOOS=linux \
    GOARCH=amd64 \
    GOPROXY=https://goproxy.cn

# 移动到工作目录：/build
WORKDIR /build

# 复制项目中的 go.mod 和 go.sum文件并下载依赖信息
COPY go.mod .
COPY go.sum .docker
RUN go mod download

# 将代码复制到容器中
COPY . .

# 将我们的代码编译成二进制可执行文件
RUN go build  -o exporter .

###################
# 接下来创建一个小镜像
###################
FROM centos:centos8

COPY ./templates /templates
COPY ./static /static
COPY ./conf /conf
COPY ./data /data
COPY entrypoint.sh /
# 从builder镜像中把/dist/app 拷贝到当前目录
COPY --from=builder /build/exporter /
EXPOSE 9000
VOLUME /data
# Add Tini 解决僵尸进程，如' ping www.baidu.com & '
# 此时会出现如 12进程，启动真正的进程13.但exporter无回收僵尸进程的功能，采用Tini解决
ENV TINI_VERSION v0.19.0
ADD https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini /tini
RUN chmod +x /tini
ENTRYPOINT ["/tini", "--"]
# Run your program under Tini
CMD ["/exporter", "/conf/config.ini"]




